package thread;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 74646
 * Date: 2022-04-23
 * Time: 11:20
 */

// 实现线程并发执行
class MyThread2 extends  Thread{
    @Override
    public void run() {
        while (true){
            System.out.println("t线程");
            /**
             * 在一个循环中如果不加任何限制，这个循环执行的速度会非常快，就看不到打印的内容的效果
             *  通过 Thread 调用 sleep 方法来强制让这个线程休眠一段时间
             *  这里的休眠操作就是强制让线程进入阻塞状态，单位是 ms
             *  调用 sleep 方法会产生一个异常 interruptedException：线程被强制中断
             */
            try {
                Thread.sleep(1000); // 1 秒之内这个线程不会到 CPU上执行
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class TestDemo2 {
    public static void main(String[] args) {
        Thread t = new MyThread2();
        t.start();

        /**
         * 在java进程中至少会有一个调用 main 方法的线程
         * 这个线程是系统自动生成的
         * 此时自己创建的 t 线程和自动创建的 main 线程就是并发(并行+并发)执行的关系
         * 宏观上区分不了并行和并发，并行与并发主要取决于系统内部的调度
         */
        while (true){
            System.out.println("main线程");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
